package summary;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @Author: 海琳琦
 * @Date: 2022/7/6 15:45
 * https://leetcode.cn/problems/group-anagrams/
 */
public class Title49 {

    /**
     * 字母异位词分组
     * @param strs
     * @return
     */
    public static List<List<String>> groupAnagrams(String[] strs) {
        Stream<String> stream = Arrays.stream(strs);
        Map<String, List<String>> collect = stream.collect(Collectors.groupingBy(str -> {
            // 返回 str 排序后的结果。
            // 按排序后的结果来grouping by，算子类似于 sql 里的 group by。
            char[] array = str.toCharArray();
            Arrays.sort(array);
            return new String(array);
        }));
        return new ArrayList<>(collect.values());
    }

    public static void main(String[] args) {
        groupAnagrams(null);
    }
}
